import java.util.Arrays;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: wx
 * Date: 2023-07-29
 * Time: 7:51
 */

public class Test {

    //存在连续三个奇数的数组

   public static  int func3(int[] arr) {

        int count = 0;
        for (int i = 0; i <arr.length ; i++) {
            if(arr[i]%2!=0){
                count++;
                if (count == 3){
                    break;
                }
            }else {
                count = 0;
            }
        }
        return count;
    }

    public static void main8(String[] args) {
       int[] arr = {1,2,34,3,4,5,7,23,12 };
        int ret = func3(arr);
        if(ret == 3) {
            System.out.println("ture");
        }else {
            System.out.println("false");
        }

    }
    //给定一个大小为 n 的数组，找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
    //你可以假设数组是非空的，并且给定的数组总是存在多数元素。

    //摩尔投票法

    static public int func2(int[] array) {
        Arrays.sort(array);
        return array[array.length/2];
    }
    public static void main7(String[] args) {
       int[] array = {2,2,1,1,1,2,2};
       func2(array);

    }

    //给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素。
    public static int func(int[] array) {
        int ret = 0;
        for (int i = 0; i <array.length; i++) {
            ret ^= array[i];
        }
        return ret;
    }
    public static void main6(String[] args) {
        int[] array = {3,2,3};

        func(array);
    }

    //给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target 的那 两个 整数，并返回它们的数组下标。
    //你可以假设每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现。
    //你可以按任意顺序返回答案。
    //示例 1：
    //输入：nums = [2,7,11,15], target = 9
    //输出：[0,1]
    //解释：因为 nums[0] + nums[1] == 9 ，返回 [0, 1] 。

    public static void sums(int[] nums,int target)
    {
        for (int i = 0; i < nums.length; i++) {
            for (int j = i+1; j < nums.length ; j++) {
                int ret = nums[i] + nums[j];
                if (ret == target) {
                    System.out.println(i+" "+j);
                    break;
                }
            }
        }
    }
    public static void main5(String[] args) {
        int[] nums ={2,7,11,15};
        int target = 9;
        sums( nums, target);
    }

    //给定一个有序整型数组, 实现二分查找

    public static int Bin_lo(int[] arr,int key) {
        int mid = 0;
        int left = 0;
        int right = arr.length -1;
        while(left <= right){
            mid = (left + right)/2;
            if(mid < key ) {
                left = mid;
            }
            if(mid > key) {
                right = mid;
            }
            if(mid == key)
            {
                break;
            }
        }
        return mid;
    }

    public static void main4(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] arr = {1,2,3,4,5,6,7,8,9};
        System.out.println("请输入要查找的数字->:");
        int key = scanner.nextInt();
        int ret = Bin_lo(arr,key);
        System.out.println("找到了,下标是" + ret);
    }

    //调整数组顺序使得奇数位于偶数之前。调整之后，不关心大小顺序。
    //如数组：[1,2,3,4,5,6]
    //调整后：[1,5,3,4,2,6}

    public static void abc(int[] arr){
        int m = arr.length - 1;
        for (int i = 0; i <arr.length ; i++) {
            if (i < m && arr[i] % 2 == 0) {
                int tmp = arr[i];
                arr[i] = arr[m];
                arr[m] = tmp;
            }
            m--;
        }
    }
    public static void main3(String[] args) {
        int[] arr = {1,2,3,4,5,6};
        abc(arr);
        for (int i = 0; i < arr.length ; i++) {
            System.out.print(arr[i] + " " );
        }
    }

    //实现一个方法 transform,以数组为参数,循环将数组中的每个元素乘以2
    //并设置到对应的数组元素上.例如:原数组为 {1, 2, 3},修改之后为 {2, 4, 6}
    public static void transform(int[] arr ) {
        for (int i = 0; i <arr.length ; i++) {
            arr[i] *= 2;
        }
    }


    public static void mai2(String[] args) {
        int[] arr = {1,2,3};
        transform(arr);
        for (int i = 0; i <arr.length ; i++) {
            System.out.print(arr[i]+" ");
        }
    }






    //汉诺塔

    public static void move(char pos1,char pos2)  {
        System.out.print(pos1 +"=>" + pos2 +" ");
    }

    /**
     * @param n 盘子数目
     * @param pos1 起始位置
     * @param pos2 中专位置
     * @param pos3 最终位置
     */
    public static void hannio(int n,char pos1, char pos2, char pos3) {
        if(n == 1) {
            move (pos1,pos3);
            return;
        }
        hannio(n -1,pos1 , pos3 , pos2);
        move(pos1,pos3);
        hannio(n-1, pos2, pos1, pos3);
    }

    public static void main1(String[] args) {
           hannio(3,'A','B','C');
    }







        private float f=1.0f;

        int m=12;

        static int n=1;

        public static void main(String args[]){

            Test t=new Test();
            Test.m;

        }


}
